/// 
/// MaDAson - Toolkit for Model Driven Software Development
/// 
/// Copyright [2006] Marcus Lankenau
/// 
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///  
///     http://www.apache.org/licenses/LICENSE-2.0
///  
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
/// 

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace Madason.MetaModel.Transformation
{
	public enum RuleScope
	{
		Undefined,
		Namespace,
		Class,
		Attribute,
		Operation,
		Association,
		State
	}

	/// <summary>
	/// A single rule for Model-Transformations
	/// </summary>
	public class Rule
	{
		private RuleScope scope;
		private string stereotype;
		private string parentStereotype;
		private string target;

		public RuleScope Scope
		{
			get { return scope; }
			set { scope = value; }
		}		

		public string Stereotype
		{
			get { return stereotype; }
			set { stereotype = value; }
		}
		
		public string ParentStereotype
		{
			get { return parentStereotype; }
			set { parentStereotype = value; }
		}

		public string Target
		{
			get { return target; }
			set { target = value; }
		}
	}

	#region helper type

	public class RuleList : ArrayList
	{
		public Rule this[int i]
		{
			get
			{
				return base[i] as Rule;
			}
		}
	}

	#endregion

}
